package futbol.tacticas.concursantes.FCThePatetics;

import futbol.tacticas.SituacionJugadores;

public class RuntimeStats {

    Calc calc = new Calc();
    /////////////////////////////////////////// PRIVADOS ///////////////////////////////////////////////////    
    private int bx1 = 0;

    private int by1 = 0;

    private int last = 0;

    private boolean init = true;
    
    private boolean lastHaveBall=false;
    
    private boolean haveBall=false;    

    //////////////////////////////////////////// PUBLICOS //////////////////////////////////////////////////
    public int time = 0;//indica el tiempo transcurrido

    public boolean esGol;//es true cuando ocurre un gol;

    public int gol[] = new int[2];//indica el marcador;

    public int pases[] = new int[2];//indica cuantos pases a realizado cada equipo;

    public int equipo;//indica que equipo tiene el dominio del balon;

    public int jugador;//indica cual jugador fue el ultimo en tocar el balon;

    public int goleadores[][] = new int[11][2];//indica la cantidad de goles por cada jugador;

    public int dominio[] = new int[2];//indica la cantidad de iteraciones en que el equipo tiene el dominio del balon;

    public int zonas[][][][] = new int[11][2][32][24];//indica las zonas que son frecuentadas por los jugadores;

    public int vel = 0;//indica la velocidad del balon
    
    public int lost=0;//indica la cantidad de veces que perdi el balon

    //////////////////////////////////////////////////////////////////////////////////////////////    
    public void captura(SituacionJugadores sj) {
        //zonas
        int x, y;
        for (int i = 0; i < 11; i++) {
            for (int j = 0; j < 2; j++) {
                if (j == 0) {
                    x = calc.control((int) ((sj.getMisJugadores()[i].x + 160) / 10),0,31);
                    y = calc.control((int) ((sj.getMisJugadores()[i].y + 120) / 10),0,23);
                } else {
                    x = calc.control((int) ((sj.getContrario()[i].x + 160) / 10),0,31);
                    y = calc.control((int) ((sj.getContrario()[i].y + 120) / 10),0,23);
                }
                zonas[i][j][x][y]++;
            }
        }
        //dominio, pases, equipo y jugador
        lastHaveBall=haveBall;
        if (!esGol && vel <= 15.5) {
            for (int i = 0; i < 11; i++) {                
                if (calc.distancia(sj.getMisJugadores()[i].x,sj.getMisJugadores()[i].y,sj.getBola().x,sj.getBola().y) <= 10) {                    
                    pases[0]++;
                    if (equipo == 1) {
                        if (!init) {
                            dominio[1] = dominio[1] + time - last;
                            haveBall=true;
                        } else {
                            init = false;
                        }
                        last = time;
                    }
                    equipo = 0;
                    jugador = i;
                }
                if (calc.distancia(sj.getContrario()[i].x,sj.getContrario()[i].y,sj.getBola().x,sj.getBola().y) <= 10) {
                    pases[1]++;
                    if (equipo == 0) {
                        if (!init) {
                            dominio[0] = dominio[0] + time - last;
                            haveBall=false;
                        } else {
                            init = false;
                        }
                        last = time;
                    }
                    equipo = 1;
                    jugador = i;
                }
            }
            if (!haveBall && lastHaveBall){
                lost++;
            }
        }
        //esGol, gol y goleadores
        esGol = false;
        int dx = sj.getBola().x - bx1;
        if (dx > 100 || dx < -100) {
            esGol = true;
            int dom = 0;
            if (dx > 100) {
                dom = 1;
                gol[1]++;
            } else {
                gol[0]++;
            }
            goleadores[jugador][dom]++;
        }
        vel = (int) Math.round(calc.control(calc.distancia(bx1,by1,sj.getBola().x,sj.getBola().y) - 1d,0d,21d));
        bx1 = sj.getBola().x;
        by1 = sj.getBola().y;        
        time++;
    }

}
